/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package credit.paysystem;

import Modelo.Perfil;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.TitledPane;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.AnchorPane;
import javax.swing.JOptionPane;
import mx.its.LnLocal.PerfilLnLocal;
import mx.its.ln.PerfilLN;

/**
 * FXML Controller class
 *
 * @author Grnmnd
 */
public class PerfilesController implements Initializable {

    /**
     * Initializes the controller class.
     */
    @FXML
    AnchorPane VentanaPerfils;
    @FXML
    Button agregar;
    @FXML
    Button editar;
    @FXML
    Button eliminar;
    @FXML
    TextField criterioBusqueda;
    @FXML
    Label Perfils;
    @FXML
    TableView TablaPerfils;
    @FXML
    TitledPane Internal;
    @FXML
    TextField CampoId;
    @FXML
    TextField CampoNombre;
    @FXML
    Label Encabezado;
    @FXML
    Button Agregar;
    @FXML
    Button Guardar;
    Perfil cs;

    @FXML
    public void actualizarLsita() {

        TableColumn ID = new TableColumn("ID");
        ID.setCellValueFactory(
                new PropertyValueFactory<Perfil, String>("id"));

        TableColumn Nombre = new TableColumn("NOMBRE");
        Nombre.setCellValueFactory(
                new PropertyValueFactory<Perfil, String>("nombre"));
        Nombre.setPrefWidth(200);

        PerfilLnLocal provedorLn = new PerfilLN();

        List<Perfil> lst = new ArrayList<>();

        for (Perfil c : provedorLn.getList()) {
            lst.add(c);
        }

        ObservableList<Perfil> k = FXCollections.observableArrayList(lst);
        TablaPerfils.setItems(k);

        TablaPerfils.getColumns().setAll(ID, Nombre);


    }

    @FXML
    public void Agregar() {
        System.out.println("Agregar.....");
        PerfilLnLocal perfilln = new PerfilLN();
        Perfil c = new Perfil();

        if (!CampoNombre.getText().isEmpty()) {
            c.setNombre(CampoNombre.getText());

            perfilln.registrar(c);
            int x = JOptionPane.showConfirmDialog(null, "REGISTRO COMPLETO \n ¿¿desea agregar otro usurio??");
            if (x != 0) {
                Cancelar();
            }
            CampoId.setText("");
            CampoNombre.setText("");
            CampoNombre.requestFocus();
        } else {
            JOptionPane.showMessageDialog(null, "El campo nombre no debe estar vacio");
        }
    }

    @FXML
    public void Guardar() {
        System.out.println("GUARDANDO CAMBIOS...");


        PerfilLnLocal carreraln = new PerfilLN();
        if (!CampoNombre.getText().isEmpty()) {
            System.out.println("poniendo values");
            cs.setNombre(CampoNombre.getText());
            carreraln.editar(cs);
            int x = JOptionPane.showConfirmDialog(null, "REGISTRO COMPLETO \n ¿¿desea modificar mas campos??");
            if (x != 0) {
                Cancelar();
            }

        } else {
            JOptionPane.showMessageDialog(null, "El campo nombre no debe estar vacio");
        }


    }

    @FXML
    public void Editar() {
        try {
            cs = (Perfil) TablaPerfils.getSelectionModel().getSelectedItem();
            Encabezado.setText("Edicion de Perfil");
            Guardar.setVisible(true);
            Internal.setVisible(true);
            agregar.setDisable(true);
            editar.setDisable(true);
            eliminar.setDisable(true);
            CampoNombre.setText(cs.getNombre());
            CampoId.setText(cs.getId() + "");
        } catch (Exception f) {
            System.out.println(f);
        }
    }

    @FXML
    public void Nuevo() {
        try {
            Encabezado.setText("Agregar Perfil");
            Agregar.setVisible(true);
            Internal.setVisible(true);
            agregar.setDisable(true);
            editar.setDisable(true);
            eliminar.setDisable(true);
        } catch (Exception f) {
            System.out.println(f);
        }
    }

    @FXML
    public void Cancelar() {
        CampoId.setText("");
        CampoNombre.setText("");
        Encabezado.setText(null);
        Agregar.setVisible(false);
        Guardar.setVisible(false);
        Internal.setVisible(false);
        agregar.setDisable(false);
        editar.setDisable(false);
        eliminar.setDisable(false);
    }

    @FXML
    public void oEliminar() {
        try {
            Perfil c = (Perfil) TablaPerfils.getSelectionModel().getSelectedItem();
            System.out.println(c);
            int x = JOptionPane.showConfirmDialog(null, "¿¿Esta Ud. Seguro que desea ELIMINAR la Perfil??");
            if (x == 0) {
                PerfilLnLocal carreraln = new PerfilLN();
                System.out.println("borrando a " + c);
                carreraln.eliminar(c);
                System.out.println("borrado");
                actualizarLsita();
            }
        } catch (Exception f) {
            System.out.println(f);
        }
    }

    public void buscar() {
        PerfilLnLocal perfilln = new PerfilLN();
        try {
            String id = criterioBusqueda.getText();
            if (perfilln.getPorPalabra(id) == null) {
                JOptionPane.showMessageDialog(null, "No hay Coincidencias");
                System.out.println("No Encontrado");
            } else {
                System.out.println("Encontrado");
                for (Perfil c : perfilln.getPorPalabra(id)) {

                    TableColumn ID = new TableColumn("ID");
                    ID.setCellValueFactory(
                            new PropertyValueFactory<Perfil, String>("id"));
                    TableColumn Nombre = new TableColumn("Nombre");
                    Nombre.setCellValueFactory(
                            new PropertyValueFactory<Perfil, String>("Nombre"));
                    Nombre.setPrefWidth(200);


                    ObservableList<Perfil> k = FXCollections.observableArrayList(perfilln.getPorPalabra(id));
                    TablaPerfils.setItems(k);

                    TablaPerfils.getColumns().setAll(ID, Nombre);
                }
            }
        } catch (Exception ex) {
            System.out.println(ex);
            System.out.println("No Encontrado");
        }

    }

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // TODO
    }
}
